

参观者进程 i {
    P(empty);   // 如果没有空闲容量，则阻塞
    P(mutex);   // 互斥通过出入口
    进门;
    V(mutex);

    参观;

    P(mutex);   // 互斥通过出入口
    出门;
    V(mutex);
    V(empty);  // 唤醒阻塞在 empty 上的一个参观者，可以进入博物馆 
}

